/**
 * 创建人:  @author huangpeng    
 * 创建时间:  2023年11月05日 15:41
 * 项目名称:  lemon-blog-cloud
 * 文件名称:  BiEmailService
 * 文件描述:  @Description: 邮件service
 *
 * All rights Reserved, Designed By huangpeng 
 * @Copyright: 2021-2023
 *
 */
package com.lemon.message.service;

import com.lemon.common.core.base.BaseService;
import com.lemon.common.core.context.SecurityContextHolder;
import com.lemon.message.domain.BiEmail;

import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;

/**
 * 包名称：com.lemon.message.service.impl
 * 类名称：BiEmailService
 * 类描述：邮件service
 * 创建人：@author huangpeng
 * 创建时间：2023年11月05日 15:41
 */
public interface BiEmailService extends BaseService<BiEmail> {

    /**
     * 查询邮件记录列表
     * @Title: selectBiEmailList
     * @Description: 查询邮件记录列表
     * @param biEmail 邮件记录
     * @return: 邮件记录集合
     * @throws:
     * @author: lemon
     * @Date: 2023-11-09
     */
    List<BiEmail> selectBiEmailList(BiEmail biEmail);

    /**
     * 发送带附件邮件
     * @Title: sendAttachMentMail
     * @Description: 发送带附件邮件
     * @param BiEmail 邮件模板
     * @return: CompletableFuture<Boolean>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/11/5 15:47
     */
    CompletableFuture<Boolean> sendEmail(BiEmail BiEmail);

    /**
     * 发送验证码邮件
     * @Title: sendCaptcha
     * @Description: 发送验证码邮件
     * @param userMap 搜检人信息
     * @return: String
     * @throws:
     * @author: huangpeng
     * @Date: 2023/11/18 17:35
     */
    String sendCaptcha(Map<String, Object> userMap);

    /**
     * 发送注册验证码
     * @Title: sendRegisterCaptcha
     * @Description: 发送注册验证码
     * @param userMap 收件人信息
     * @return: String
     * @throws:
     * @author: huangpeng
     * @Date: 2023/11/26 1:34
     */
    String sendRegisterCaptcha(Map<String, Object> userMap);

    /**
     * 发送重置用户密码邮件
     * @Title: sendRestPasswordCaptcha
     * @Description: 发送重置用户密码邮件
     * @param userMap 收件人信息
     * @return: String
     * @throws:
     * @author: huangpeng
     * @Date: 2023/11/26 19:02
     */
    String sendRestPasswordCaptcha(Map<String, Object> userMap);
}
